﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using vudu.Presentacion.Contrato.VU_03_Gestionar_Pensum_por_Escuela;
using vudu.Logica.Fachada;
using vudu.ClasesDominio;

namespace vudu.Presentacion.Presentador.VU_03_Gestionar_Pensum_por_Escuela
{
    public class PresentadorArchivarPensum
    {
        #region Atributos privados

        public IContratoArchivarPensum _vista;
        private EnlaceLogico _fachada;
        private Escuela _usuarioEscuela;
        private Pensum _pensumVigente = new Pensum();
        private string _rol;

        #endregion

        #region Constructor

        public PresentadorArchivarPensum(IContratoArchivarPensum vista)
        {
            _vista = vista;
            _fachada = (EnlaceLogico)_vista.Sesion["Fachada"];
            if (_fachada != null)
                _usuarioEscuela = (Escuela)_fachada.RolActual;
            _rol = (string)_vista.Sesion["TipoRol"];
        }

        #endregion

        #region set y get

        public Escuela UsuarioEscuela
        {
            get { return _usuarioEscuela; }
            set { _usuarioEscuela = value; }
        }

        public string Rol
        {
            get { return _rol; }
            set { _rol = value; }
        }

        public EnlaceLogico Fachada
        {
            get { return _fachada; }
            set { _fachada = value; }
        }

        public IContratoArchivarPensum Vista
        {
            get { return _vista; }
            set { _vista = value; }
        }

        #endregion 

        public void MostrarNombreUsuario()
        {
            Escuela esc = (Escuela)_fachada.RolActual;
            _vista.Actor.Text = _rolUsuario + _separador + esc.NombreEscuela;
        }

        public void ImprimirPensum()
        {

            if (_usuarioEscuela != null)
            {
                _pensumVigente = _fachada.ConsultarPensumActivo(_usuarioEscuela.IdEscuela);
            }

            if (_pensumVigente.IdPensum != 0)
            {
                _vista.PensumVigente.Text = "Pensum Activo";
                _vista.PeriodoPensum.Text = "Periodo: " + _pensumVigente.FechaInicio.Day + "/" + _pensumVigente.FechaInicio.Month + "/" + _pensumVigente.FechaInicio.Year;
            }
            else
            {
                _vista.PensumVigente.Text = "No hay pensum para archivar";
                _vista.Boton.Visible = false;
            }
        }

        public void ArchivarPensum()
        {
            _pensumVigente = _fachada.ConsultarPensumActivo(_usuarioEscuela.IdEscuela);
            if (_pensumVigente.IdPensum != 0)
            {
                this.EscribirMensaje(_fachada.ArchivarPensum(_pensumVigente.IdPensum));
                this.Limpiar();
            }
        }

        private void EscribirMensaje(bool resultado)
        {
            if (resultado)
            {
                _vista.Mensaje.Text = _mensajeConfirmacion;
                _vista.Mensaje.CssClass = _styleConfirmacion;
                _vista.Mensaje.Visible = true;
                _vista.Boton.Visible = false;
            }
            else
            {
                _vista.Mensaje.Text = _mensajeError;
                _vista.Mensaje.CssClass = _styleError;
                _vista.Mensaje.Visible = true;
            }
        }

        private void Limpiar()
        {
            _vista.PensumVigente.Text = "";
            _vista.PeriodoPensum.Text = "";
        }

        #region Constantes

        private const int _numeroFilas = 8;
        private const int _tipoConsulta = 2;
        private const string _mensajeConfirmacion = "El pensum se archivo con éxito";
        private const string _mensajeError = "Operacion Fallida: No se pudo archivar el pensum";
        private const string _styleConfirmacion = "transaccionExitosa";
        private const string _styleError = "transaccionFallida";
        private const string _separador = ": ";
        private const string _rolUsuario = "Escuela";

        #endregion
    }
}